package com.example.multiaccountfetcher.strategy;

import java.util.concurrent.CompletableFuture;

/**
 * 数据拉取策略接口
 * 使用策略模式支持多接口拉数据
 */
public interface DataFetchStrategy {
    
    /**
     * 拉取数据的方法
     * @param accountId 账号ID
     * @param params 请求参数
     * @return 拉取结果的CompletableFuture
     */
    CompletableFuture<Object> fetchData(String accountId, Object params);
    
    /**
     * 判断是否还需要继续拉数据
     * @param accountId 账号ID
     * @param currentCount 当前已拉取次数
     * @return 是否需要继续拉取
     */
    boolean shouldContinueFetching(String accountId, int currentCount);
    
    /**
     * 获取该策略的接口类型标识符
     * @return 接口类型标识符
     */
    String getInterfaceType();
    
    /**
     * 获取该策略的请求间隔时间（秒）
     * @return 请求间隔时间
     */
    int getRequestIntervalSeconds();
}